package com.reactim.message.protection;

import lombok.AllArgsConstructor;
import lombok.Data;

/**
 * 异常检测结果
 */
@Data
@AllArgsConstructor
public class AnomalyDetectionResult {
    
    /**
     * 检测状态
     */
    public enum Status {
        NORMAL,     // 正常
        ANOMALOUS,  // 异常
        ERROR       // 检测错误
    }
    
    /**
     * 检测状态
     */
    private final Status status;
    
    /**
     * 异常类型（当状态为异常时）
     */
    private final String anomalyType;
    
    /**
     * 详细描述
     */
    private final String description;
    
    /**
     * 创建正常结果
     */
    public static AnomalyDetectionResult normal() {
        return new AnomalyDetectionResult(Status.NORMAL, null, "连接行为正常");
    }
    
    /**
     * 创建异常结果
     */
    public static AnomalyDetectionResult anomalous(String anomalyType, String description) {
        return new AnomalyDetectionResult(Status.ANOMALOUS, anomalyType, description);
    }
    
    /**
     * 创建错误结果
     */
    public static AnomalyDetectionResult error(String description) {
        return new AnomalyDetectionResult(Status.ERROR, null, description);
    }
    
    /**
     * 是否为正常状态
     */
    public boolean isNormal() {
        return status == Status.NORMAL;
    }
    
    /**
     * 是否为异常状态
     */
    public boolean isAnomalous() {
        return status == Status.ANOMALOUS;
    }
    
    /**
     * 是否为错误状态
     */
    public boolean isError() {
        return status == Status.ERROR;
    }
}